home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / Pacific C for DOS / HELP / LIBRARY.HLP < prev    next >
Text File  |  1995-03-08  |  73KB  |  2,679 lines

  1. INDEX 153 100 C Library Reference
  2. 10309 14 _EXIT
  3. 23419 74 _GETARGS
  4. 25 24 ACOS
  5. 728 20 ASCTIME
  6. 25 24 ASIN
  7. 1183 24 ASSERT
  8. 25 24 ATAN
  9. 25 24 ATAN2
  10. 2108 17 ATOF
  11. 2108 17 ATOI
  12. 2108 17 ATOL
  13. 2539 26 BDOS
  14. 3318 21 BIOS
  15. 3980 16 CALLOC
  16. 10999 13 CEIL
  17. 4385 19 CGETS
  18. 4863 20 CHDIR
  19. 5303 23 CHMOD
  20. 6040 16 CLOSE
  21. 6394 18 CLREOF
  22. 6394 18 CLRERR
  23. 6904 13 COS
  24. 7097 11 COSH
  25. 4385 19 CPUTS
  26. 7305 23 CREAT
  27. 8152 27 CTIME
  28. 8645 8 DI
  29. 8780 16 DUP
  30. 8645 8 EI
  31. 9171 20 EXECL
  32. 9171 20 EXECV
  33. 9794 15 EXIT
  34. 10592 15 EXP
  35. 10999 13 FABS
  36. 11319 15 FCLOSE
  37. 11643 18 FEOF
  38. 11643 18 FERROR
  39. 12068 16 FFLUSH
  40. 12442 20 FGETC
  41. 12978 15 FGETS
  42. 13521 14 FILENO
  43. 10999 13 FLOOR
  44. 13853 89 FOPEN
  45. 17368 19 FPRINTF
  46. 17936 17 FPUTC
  47. 18404 14 FPUTS
  48. 18683 23 FREAD
  49. 19305 14 FREE
  50. 19561 17 FREOPEN
  51. 20007 18 FREXP
  52. 20656 18 FSCANF
  53. 21190 46 FSEEK
  54. 22578 16 FTELL
  55. 22942 18 FWRITE
  56. 26292 12 GETC
  57. 26627 21 GETCH
  58. 27235 17 GETCHAR
  59. 26627 21 GETCHE
  60. 27678 18 GETCWD
  61. 28141 33 GETENV
  62. 29479 15 GETS
  63. 29797 16 GETUID
  64. 30151 20 GETW
  65. 30791 22 GMTIME
  66. 31573 11 INP
  67. 31896 30 INT86
  68. 31896 30 INT86X
  69. 31896 30 INTDOS
  70. 31896 30 INTDOSX
  71. 33193 42 ISALNUM
  72. 33193 42 ISALPHA
  73. 33193 42 ISASCII
  74. 34292 13 ISATTY
  75. 33193 42 ISCNTRL
  76. 33193 42 ISDIGIT
  77. 33193 42 ISLOWER
  78. 33193 42 ISPUNCT
  79. 33193 42 ISSPACE
  80. 33193 42 ISUPPER
  81. 34686 15 KBHIT
  82. 20007 18 LDEXP
  83. 30791 22 LOCALTIME
  84. 10592 15 LOG
  85. 10592 15 LOG10
  86. 34973 52 LONGJMP
  87. 36522 18 LSEEK
  88. 37027 19 MALLOC
  89. 37617 25 MEMCMP
  90. 37617 25 MEMCPY
  91. 37617 25 MEMSET
  92. 38570 18 MKDIR
  93. 39003 29 MSDOS
  94. 39003 29 MSDOSCX
  95. 39984 100 OPEN
  96. 31573 11 OUTP
  97. 10592 15 POW
  98. 43092 92 PRINTF
  99. 46633 14 PUTC
  100. 26627 21 PUTCH
  101. 46911 14 PUTCHAR
  102. 47125 15 PUTS
  103. 47417 16 PUTW
  104. 47765 38 QSORT
  105. 48915 15 RAND
  106. 49182 20 READ
  107. 49819 20 REALLOC
  108. 50476 15 REMOVE
  109. 50753 15 RENAME
  110. 51083 17 REWIND
  111. 38570 18 RMDIR
  112. 51532 16 SBRK
  113. 52010 79 SCANF
  114. 55180 13 SEGREAD
  115. 57382 21 SET_VECTOR
  116. 55885 36 SETBUF
  117. 55439 13 SETJMP
  118. 55667 14 SETUID
  119. 55885 36 SETVBUF
  120. 58096 26 SIGNAL
  121. 59184 13 SIN
  122. 7097 11 SINH
  123. 59393 21 SPAWNL
  124. 59393 21 SPAWNV
  125. 59393 21 SPAWNVE
  126. 60155 19 SPRINTF
  127. 60759 14 SQRT
  128. 61335 18 SRAND
  129. 60952 16 SSCANF
  130. 61815 48 STAT
  131. 63764 29 STRCAT
  132. 65148 18 STRCHR
  133. 63764 29 STRCMP
  134. 63764 29 STRCPY
  135. 63764 29 STRLEN
  136. 63764 29 STRNCAT
  137. 63764 29 STRNCMP
  138. 63764 29 STRNCPY
  139. 65148 18 STRRCHR
  140. 65690 24 SYSTEM
  141. 66372 13 TAN
  142. 7097 11 TANH
  143. 66535 19 TIME
  144. 67121 19 TOASCII
  145. 67121 19 TOLOWER
  146. 67121 19 TOUPPER
  147. 67635 22 UNGETC
  148. 26627 21 UNGETCH
  149. 68117 15 UNLINK
  150. 68526 47 VA_ARG
  151. 68526 47 VA_END
  152. 68526 47 VA_START
  153. 43092 92 VPRINTF
  154. 70551 61 WRITE
  155. %ACOS
  156. %ASIN
  157. %ATAN
  158. %ATAN2
  159.  
  160. SYNOPSIS
  161.      #include  <math.h>
  162.  
  163.      double    acos(double f)
  164.      double    asin(double f)
  165.      double    atan(double f)
  166.  
  167.      double    atan2(double x, double y)
  168.  
  169. DESCRIPTION
  170.  
  171.      These functions are the converse of the  trignometric  func-
  172.      tions  cos, sin and tan. Acos and asin are undefined for ar-
  173.      guments whose absolute value is greater than  1.0.  The  re-
  174.      turned value is in radians, and always in the range -pi/2 to
  175.      +pi/2, except for ■#cos(), which returns a value in the  range
  176.      0  to  pi.   ■%Atan2() returns the inverse tan of x/y but uses
  177.      the signs of its arguments to return a value  in  the  range
  178.      -pi to +pi.
  179.  
  180. SEE ALSO
  181.      sin, cos, tan
  182.  
  183. %ASCTIME
  184.  
  185. SYNOPSIS
  186.      #include  <time.h>
  187.  
  188.      char *    asctime(time_t t)
  189.  
  190. DESCRIPTION
  191.  
  192.      ■'Asctime() takes the broken down time pointed to by its argu-
  193.      ment,  and  returns  a  26  character  string describing the
  194.      current date and time in the format
  195.  
  196.            Sun Sep 16 01:03:52 1973\n\0
  197.  
  198.      Note the newline at the end of the string. The width of each
  199.      field in the string is fixed.
  200.  
  201. SEE ALSO
  202.      ctime, time, gmtime, localtime
  203.  
  204. %ASSERT
  205.  
  206. SYNOPSIS
  207.      #include  <assert.h>
  208.  
  209.      void      assert(int e)
  210.  
  211. DESCRIPTION
  212.  
  213.      This macro is used for debugging purposes; the basic  method
  214.      of  usage  is  to place assertions liberally throughout your
  215.      code at points where correct operation of the  code  depends
  216.      upon  certain  conditions  being true initially. An ■&assert()
  217.      may be used to ensure  at  run  time  that  that  assumption
  218.      holds. For example, the following statement asserts that the
  219.      pointer tp is non-null:
  220.  
  221.            assert(tp);
  222.  
  223.      If at run time the expression evaluates to false,  the  pro-
  224.      gram  will  abort with a message identifying the source file
  225.      and line number of the assertion, and the expression used as
  226.      an argument to it. A fuller discussion of the uses of assert
  227.      is impossible in limited space, but it is closely linked  to
  228.      methods of proving program correctness.
  229. %ATOF
  230. %ATOI
  231. %ATOL
  232.  
  233. SYNOPSIS
  234.      #include  <math.h>
  235.  
  236.      double    atof(char * s)
  237.      int       atoi(char * s)
  238.  
  239.      #include  <stdlib.h>
  240.  
  241.      long      atol(char * s)
  242.  
  243. DESCRIPTION
  244.  
  245.      These routines convert a  decimal  number  in  the  argument
  246.      string  s  into  a  double  float,  integer  or long integer
  247.      respectively. Leading blanks are skipped over. In  the  case
  248.      of ■$atof(), the number may be in scientific notation.
  249. %BDOS
  250.  
  251. SYNOPSIS
  252.      #include  <cpm.h>
  253.  
  254.      char      bdos(int func, int arg)
  255.  
  256.      short bdoshl(int func, int arg)(CP/M-80 only)
  257.  
  258. DESCRIPTION
  259.  
  260.      ■$Bdos() calls the CP/M BDOS with func in register C  (CL  for
  261.      CP/M-86)  and  arg  in register DE (DX). The return value is
  262.      the byte returned by the BDOS in register A (AX).   ■&Bdoshl()
  263.      is  the  same, except that the return value is the value re-
  264.      turned by the BDOS in HL.  Constant values for  the  various
  265.      BDOS function values are defined in cpm.h.
  266.  
  267.  
  268. These functions should be avoided except in  programs  which  are
  269.      not  intended  to  be used on an operating system other than
  270.      CP/M. The standard I/O routines are to be  preferred,  since
  271.      they are portable.
  272.  
  273. SEE ALSO
  274.      bios, msdos
  275.  
  276. %BIOS
  277.  
  278. SYNOPSIS
  279.      #includ   <cpm.h>
  280.  
  281.      char bios(int n, int a1, int a2)
  282.  
  283. DESCRIPTION
  284.  
  285.      This function will call the n'th bios entry point (cold boot
  286.      =  0,  warm boot = 1, etc.) with register BC (CX) set to the
  287.      argument a1 and DE (DX) set to the argument a2.  The  return
  288.      value  is  the  contents  of  register A (AX) after the bios
  289.      call. On CP/M-86, bdos function 50 is used  to  perform  the
  290.      bios call.  This function should not be used unless unavoid-
  291.      able, since it is highly  non-portable.  There  is  even  no
  292.      guarantee  of  portability  of  bios calls between differing
  293.      CP/M systems.
  294.  
  295. SEE ALSO
  296.      bdos
  297.  
  298. %CALLOC
  299.  
  300. SYNOPSIS
  301.      #include  <stdlib.h>
  302.  
  303.      char * calloc(size_t cnt, size_t size)
  304.  
  305. DESCRIPTION
  306.  
  307.      ■&Calloc() attempts to obtain a contiguous  block  of  dynamic
  308.      memory which will hold cnt objects, each of length size. The
  309.      block is filled with zeroes.  A pointer to the block is  re-
  310.      turned, or 0 if the memory could not be allocated.
  311.  
  312. SEE ALSO
  313.      brk, sbrk, malloc, free
  314.  
  315. %CGETS
  316. %CPUTS
  317.  
  318. SYNOPSIS
  319.      #include  <conio.h>
  320.  
  321.      char *    cgets(char * s)
  322.  
  323.      void      cputs(char * s)
  324.  
  325. DESCRIPTION
  326.  
  327.      ■%Cputs() will read one line of input from  the  console  into
  328.      the  buffer  passed  as  an argument. It does so by repeated
  329.      calls to ■&getche().  ■%Cputs() writes its  argument  string  to
  330.      the console, outputting carriage returns before each newline
  331.      in the string. It calls ■%putch() repeatedly.
  332.  
  333. SEE ALSO
  334.      getch, getche, putch
  335.  
  336. %CHDIR
  337.  
  338. SYNOPSIS
  339.      #include  <sys.h>
  340.  
  341.      int       chdir(char * s)
  342.  
  343. DESCRIPTION
  344.  
  345.      This function is availble only under MS-DOS. It changes  the
  346.      current working directory to the path name supplied as argu-
  347.      ment. This path name be be absolute, as in A:\FRED, or rela-
  348.      tive, as in ..\SOURCES.  A return value of -1 indicates that
  349.      the requested change could not be performed.
  350.  
  351.  
  352.  
  353.  
  354. SEE ALSO
  355.      mkdir, rmdir, getcwd
  356.  
  357. %CHMOD
  358.  
  359. SYNOPSIS
  360.      #include  <stat.h>
  361.  
  362.      int       chmod(char * name, int )
  363.      char *    name;
  364.      int       mode;
  365.  
  366. DESCRIPTION
  367.  
  368.      This function changes the file attributes (or modes) of  the
  369.      named  file.   The argument name may be any valid file name.
  370.      The mode argument may include all bits defined in ■$stat.■!h ex-
  371.      cept  those  relating to the type of the file, e.g. S_IFDIR.
  372.      Note however that not all bits  may  be  changed  under  all
  373.      operating  systems,  e.g. neither DOS nor CP/M permit a file
  374.      to be made unreadable, thus even if mode  does  not  include
  375.      S_IREAD  the  file  will  still be readable (and ■$stat() will
  376.      still return S_IREAD in flags).
  377.  
  378. SEE ALSO
  379.      stat, creat
  380.  
  381. %CLOSE
  382.  
  383. SYNOPSIS
  384.      #include  <unixio.h>
  385.  
  386.      int close(int fd)
  387.  
  388. DESCRIPTION
  389.  
  390.      This routine  closes  the  file  associated  with  the  file
  391.      descriptor fd, which will have been previously obtained from
  392.      a call to ■$open(). ■%Close() returns 0 for a successful  close,
  393.      or -1 otherwise.
  394.  
  395. SEE ALSO
  396.      open, read, write, seek
  397.  
  398. %CLRERR
  399. %CLREOF
  400.  
  401. SYNOPSIS
  402.      #include  <stdio.h>
  403.      void clrerr(FILE * stream)
  404.      void clreof(FILE * stream)
  405.  
  406. DESCRIPTION
  407.  
  408.      These are macros, defined in stdio.h, which reset the  error
  409.      and end of file flags respectively for the specified stream.
  410.      They should be used with care; the major valid  use  is  for
  411.      clearing an EOF status on input from a terminal-like device,
  412.      where it may be valid to continue to read after having  seen
  413.      an end-of-file indication.
  414.  
  415. SEE ALSO
  416.      fopen, fclose
  417.  
  418. %COS
  419.  
  420. SYNOPSIS
  421.      #include  <math.h>
  422.  
  423.      double    cos(double f)
  424.  
  425. DESCRIPTION
  426.  
  427.      This function yields the cosine of its argument.
  428.  
  429. SEE ALSO
  430.      sin, tan, asin, acos, atan
  431.  
  432. %COSH
  433. %SINH
  434. %TANH
  435.  
  436. SYNOPSIS
  437.      #include  <math.h>
  438.  
  439.      double    cosh(double f)
  440.      double    sinh(double f)
  441.      double    tanh(double f)
  442.  
  443. DESCRIPTION
  444.  
  445.      These functions implement the hyperbolic trig functions.
  446. %CREAT
  447.  
  448. SYNOPSIS
  449.      #include  <stat.h>
  450.  
  451.      int       creat(char * name, int mode)
  452.  
  453. DESCRIPTION
  454.  
  455.      This routine attempts to create the file named by name.   If
  456.      the  file  exists  and  is writeable, it will be removed and
  457.      re-created. The return value is -1 if the create failed,  or
  458.      a  small non-negative number if it succeeded. This number is
  459.      a valuable token which must be used to write to or close the
  460.      file  subsequently.   Mode  is used to initialize the attri-
  461.      butes of the created file.  The allowable bits are the  same
  462.      as for ■%chmod(), but for Unix compatibility it is recommended
  463.      that a mode of 0666 or 0600 be used. Under CP/M the mode  is
  464.      ignored  - the only way to set a files attributes is via the
  465.      ■%chmod() function.
  466.  
  467. SEE ALSO
  468.      open, close, read, write, seek, stat, chmod
  469.  
  470. %CTIME
  471.  
  472. SYNOPSIS
  473.      #include  <time.h>
  474.  
  475.      char *    ctime(time_t t)
  476.  
  477. DESCRIPTION
  478.  
  479.      ■%Ctime() converts the time in seconds pointed to by its argu-
  480.      ment  to a string of the same form as described for asctime.
  481.      Thus the following program prints the current time and date:
  482.  
  483.  
  484.        #include    <time.h>
  485.  
  486.        main()
  487.        {
  488.              time_t      t;
  489.  
  490.              time(&t);
  491.              printf(■"%s■-, ctime(&t));
  492.        }
  493.  
  494.  
  495. SEE ALSO
  496.      gmtime, localtime, asctime, time
  497.  
  498. %DI
  499. %EI
  500.  
  501. SYNOPSIS
  502.      void ei(void);
  503.      void di(void);
  504.  
  505. DESCRIPTION
  506.  
  507.      ■"Ei() and ■"di() enable and disable interrupts respectivly.
  508. %DUP
  509.  
  510. SYNOPSIS
  511.      #include  <unixio.h>
  512.  
  513.      int dup(int fd)
  514.  
  515. DESCRIPTION
  516.  
  517.      Given a file descriptor, such as returned  by  ■$open(),  this
  518.      routine will return another file descriptor which will refer
  519.      to the same open file.  -1 is returned if the fd argument is
  520.      a bad descriptor or does not refer to an open file.
  521.  
  522. SEE ALSO
  523.      open, close, creat, read, write
  524.  
  525. %EXECL
  526. %EXECV
  527.  
  528. SYNOPSIS
  529.      #include  <sys.h>
  530.  
  531.      int execl(char * name, pname, ...)
  532.      int execv(char * name, ppname)
  533.  
  534. DESCRIPTION
  535.  
  536.      ■%Execl() and ■%execv() load and execute the  program  specified
  537.      by the string name. ■%Execl() takes the arguments for the pro-
  538.      gram from the zero-terminated list of string arguments.  ■#Ex-
  539.      ■#ecv() is passed a pointer to an array of strings.  The array
  540.      must be zero-terminated. If the named program is  found  and
  541.      can  be read, the call does not return. Thus any return from
  542.      these routines may be treated as an error.
  543.  
  544. SEE ALSO
  545.      spawnl, spawnv, system
  546.  
  547. %EXIT
  548.  
  549. SYNOPSIS
  550.      #include  <stdlib.h>
  551.  
  552.      void      exit(int status)
  553.  
  554. DESCRIPTION
  555.  
  556.      This call will close all open files and exit from  the  pro-
  557.      gram. On CP/M, this means a return to CCP level. Status will
  558.      be stored in a known place for  examination  by  other  pro-
  559.      grams.  This is only useful if the program executing was ac-
  560.      tually invoked by another program  which  is  trapping  warm
  561.      boots. The status value will be stored on CP/M at 80H.  This
  562.      call will never return.
  563. %_EXIT
  564.  
  565. SYNOPSIS
  566.      #include  <stdlib.h>
  567.      void      _exit(int status)
  568.  
  569. DESCRIPTION
  570.  
  571.      This function will cause an immediate exit from the program,
  572.      without  the  normal  flushing of stdio buffers that is per-
  573.      formed by ■$exit().
  574.  
  575. SEE ALSO
  576.      exit
  577.  
  578. %EXP
  579. %LOG
  580. %LOG10
  581. %POW
  582.  
  583. SYNOPSIS
  584.      #include  <math.h>
  585.  
  586.      double    exp(double f)
  587.      double    log(double f)
  588.      double    log10(double f)
  589.      double    pow(double x, y)
  590.  
  591. DESCRIPTION
  592.  
  593.      ■#Exp() returns the  exponential  function  of  its  argument,
  594.      ■#log()  the natural logarithm of f, and ■%log10() the logarithm
  595.      to base 10. ■#Pow() returns the value of x raised to the  y'th
  596.      power.
  597. %FABS
  598. %CEIL
  599. %FLOOR
  600.  
  601. SYNOPSIS
  602.      #include  <math.h>
  603.  
  604.      double    fabs(double f)
  605.      double    ceil(double f)
  606.      double    floor(double f)
  607.  
  608. DESCRIPTION
  609.  
  610.      These routines return respectively the absolute value of  f,
  611.      the smallest integral value not less than f, and the largest
  612.      integral value not greater than f.
  613. %FCLOSE
  614.  
  615. SYNOPSIS
  616.      #include  <stdio.h>
  617.  
  618.      int       fclose(FILE * stream)
  619.  
  620. DESCRIPTION
  621.  
  622.      This routine closes the specified i/o stream. Stream  should
  623.      be  a token returned by a previous call to ■%fopen().  NULL is
  624.      returned on a successful close, EOF otherwise.
  625.  
  626. SEE ALSO
  627.      fopen, fread, fwrite
  628.  
  629. %FEOF
  630. %FERROR
  631.  
  632. SYNOPSIS
  633.      #include  <stdio.h>
  634.  
  635.      feof(FILE * stream)
  636.      ferror(FILE * stream)
  637.  
  638. DESCRIPTION
  639.  
  640.      These macros test the status  of  the  EOF  and  ERROR  bits
  641.      respectively  for the specified stream. Each will be true if
  642.      the corresponding flag is set. The  macros  are  defined  in
  643.      stdio.h.  Stream  must  be  a  token  returned by a previous
  644.      ■%fopen() call.
  645.  
  646. SEE ALSO
  647.      fopen, fclose
  648.  
  649. %FFLUSH
  650.  
  651. SYNOPSIS
  652.      #include  <stdio.h>
  653.  
  654.      int fflush(FILE * stream)
  655.  
  656. DESCRIPTION
  657.  
  658.      ■&Fflush() will output  to  the  disk  file  or  other  device
  659.      currently  open  on the specified stream the contents of the
  660.      associated buffer. This is typically used for flushing  buf-
  661.      fered standard output in interactive applications.
  662.  
  663. SEE ALSO
  664.      fopen, fclose
  665.  
  666. %FGETC
  667.  
  668. SYNOPSIS
  669.      #include  <stdio.h>
  670.  
  671.      int       fgetc(FILE * stream)
  672.  
  673. DESCRIPTION
  674.  
  675.      ■%Fgetc() returns the next character from  the  input  stream.
  676.      If  end-of-file is encountered EOF will be returned instead.
  677.      It is for this reason that the function is declared as  int.
  678.      The  integer  EOF  is  not a valid byte, thus end-of-file is
  679.      distinguishable from reading a byte of all 1 bits  from  the
  680.      file.  ■%Fgetc() is the non-macro version of ■$getc().
  681.  
  682.  
  683.  
  684. SEE ALSO
  685.      fopen, fclose, fputc, getc, putc
  686.  
  687. %FGETS
  688.  
  689. SYNOPSIS
  690.      #include  <stdio.h>
  691.  
  692.      char * fgets(char * s, size_t n, char * stream)
  693.  
  694. DESCRIPTION
  695.  
  696.      ■%Fgets() places in the buffer s up to n-1 characters from the
  697.      input  stream.  If a newline is seen in the input before the
  698.      correct number of characters is read, then ■%fgets() will  re-
  699.      turn  immediately.  The  newline will be left in the buffer.
  700.      The buffer will be null terminated in any case.  A  success-
  701.      ful ■%fgets() will return its first argument; NULL is returned
  702.      on end-of-file or error.
  703. %FILENO
  704.  
  705. SYNOPSIS
  706.      fileno(FILE * stream)
  707.  
  708. DESCRIPTION
  709.  
  710.      ■&Fileno() is a macro  from  stdio.h  which  yields  the  file
  711.      descriptor associated with stream. It is mainly used when it
  712.      is desired to perform some low-level  operation  on  a  file
  713.      opened as a stdio stream.
  714.  
  715. SEE ALSO
  716.      fopen, fclose, open, close
  717.  
  718. %FOPEN
  719.  
  720. SYNOPSIS
  721.      #include  <stdio.h>
  722.  
  723.      FILE * fopen(char * name, char * mode);
  724.  
  725. DESCRIPTION
  726.  
  727.  
  728. DESCRIPTION
  729.  
  730.      ■%Fopen() attempts to open file for  reading  or  writing  (or
  731.      both)  according  to  the  mode  string  supplied.  The mode
  732.      string is interpreted as follows:
  733. r
  734.  
  735.      The file is opend for reading if it exists. If the file does
  736.      not exist the call fails.
  737. r+
  738.  
  739.      If the file exists it is opened for reading and writing.  If
  740.      the file does not already exist the call fails.
  741. w
  742.  
  743.      The file is created if it does not exist, or truncated if it
  744.      does. It is then opened for writing.
  745. w+
  746.  
  747.      The file is created if it does not already exist,  or  trun-
  748.      cated  if it does.  The file is opened for reading and writ-
  749.      ing.
  750. a
  751.  
  752.      The file is created if it does not already exist, and opened
  753.      for  writing.   All writes will be dynamically forced to the
  754.      end of file, thus this mode is known as ■&append mode.
  755. a+
  756.  
  757.      The file is created if it does not already exist, and opened
  758.      for  reading  and  writing.  All  writes to the file will be
  759.      dynamically forced to the end of the file,  i.e.  while  any
  760.      portion  of the file may be read, all writes will take place
  761.      at the end of the file and will not overwrite  any  existing
  762.      data.   Calling  ■%fseek() in an attempt to write at any other
  763.      place in the file will not be effective.  The  ■!b■*  modifier
  764.      may  be  appended  to  any of the above modes, e.g. ■#r+b■# or
  765.      ■#rb+■< are equivalent. Adding the ■!b■8 modifier will cause the
  766.      file  to be opened in binary rather than ASCII mode. Opening
  767.      in ASCII mode ensures that text files are read in  a  manner
  768.      compatible with the Unix-derived conventions for C programs,
  769.      i.e. that text files  contain  lines  delimited  by  newline
  770.      characters.   The special treatment of read or written char-
  771.      acters varies with the operating system, but  includes  some
  772.      or all of the following:
  773. NEWLINE (LINE FEED)
  774.  
  775.      Converted to carriage return, line feed on output.
  776. RETURN
  777.  
  778.      Ignored on input, inserted before NEWLINE on output.
  779. CTRL-Z
  780.  
  781.      Signals EOF on input, appended on fclose on output if neces-
  782.      sary on CP/M.
  783.  
  784.  
  785. Opening a file in binary mode will allow  each  character  to  be
  786.      read  just  as written, but because the exact size of a file
  787.      is not known to CP/M, the file may contain more  bytes  than
  788.      were  written  to  it.  See ■$open() for a description of what
  789.      constitutes a file name.  When using one of  the  read/write
  790.      modes  (with  a  '+' character in the string), although they
  791.      permits reading and writing on the same stream,  it  is  not
  792.      possible  to  arbitrarily  mix input and output calls to the
  793.      same stream. At any given time a stream opened  with  a  ■!+
  794.      mode  will  be in either an input or output state. The state
  795.      may only be changed when the  associated  buffer  is  empty,
  796.      which  is  only  guaranteed  immediately  after  a  call  to
  797.      ■&fflush() or one of the file positioning functions ■%fseek() or
  798.      ■&rewind().  The  buffer will also be empty after encountering
  799.      EOF while reading a binary stream,  but  it  is  recommended
  800.      that an explicit call to ■&fflush() be used to ensure this si-
  801.      tuation. Thus after reading from a stream  you  should  call
  802.      ■&fflush()  or  ■%fseek()  before  attempting  to  write on that
  803.      stream, and vice versa.
  804.  
  805. SEE ALSO
  806.      fclose, fgetc, fputc, freopen
  807.  
  808. %FPRINTF
  809.  
  810. SYNOPSIS
  811.      #include  <stdio.h>
  812.  
  813.      fprintf(FILE * stream, char * fmt, ...);
  814.      vfprintf(FILE * stream, va_list va_arg);
  815.  
  816. DESCRIPTION
  817.  
  818.      ■'Fprintf()  performs  formatted  printing  on  the  specified
  819.      stream.  Refer  to ■&printf() for the details of the available
  820.      formats.  ■(Vfprintf() is similar to  ■'fprintf()  but  takes  a
  821.      variable  argument  list pointer rather than a list of argu-
  822.      ments. See the description of ■"va_■%start() for  more  informa-
  823.      tion on variable argument lists.
  824.  
  825. SEE ALSO
  826.      printf, fscanf, sscanf
  827.  
  828. %FPUTC
  829.  
  830. SYNOPSIS
  831.      #include  <stdio.h>
  832.  
  833.      int       fputc(int c, FILE * stream)
  834.  
  835. DESCRIPTION
  836.  
  837.      The character c is written to the supplied stream.  This  is
  838.      the  non-macro  version of ■$putc(). The character is returned
  839.      if it was successfully written, EOF is  returned  otherwise.
  840.      Note  that ■5written to the stream■: may mean only placing the
  841.      character in the buffer associated with the stream.
  842.  
  843. SEE ALSO
  844.      putc, fgetc, fopen, fflush
  845.  
  846. %FPUTS
  847.  
  848. SYNOPSIS
  849.      #include  <stdio.h>
  850.  
  851.      int       fputs(char * s, FILE * stream)
  852.  
  853. DESCRIPTION
  854.  
  855.      The null-terminated string s is written to  the  stream.  No
  856.      newline is appended (cf. ■$puts() ). The error return is EOF.
  857.  
  858. SEE ALSO
  859.      puts, fgets, fopen, fclose
  860.  
  861. %FREAD
  862.  
  863. SYNOPSIS
  864.      #include  <stdio.h>
  865.  
  866.      int       fread(void * buf, size_t size, size_t cnt,
  867.                     FILE * stream)
  868.  
  869. DESCRIPTION
  870.  
  871.      Up to cnt objects, each of length size, are read into memory
  872.      at  buf  from  the stream. The return value is the number of
  873.      objects read. If none is read, 0  will  be  returned.   Note
  874.      that  a  return value less than cnt, but greater than 0, may
  875.      not represent an error (cf. ■&fwrite() ).  No  word  alignment
  876.      in  the stream is assumed or necessary. The read is done via
  877.      successive ■$getc()'s.
  878.  
  879.  
  880.  
  881.  
  882. SEE ALSO
  883.      fwrite, fopen, fclose, getc
  884.  
  885. %FREE
  886.  
  887. SYNOPSIS
  888.      #include  <stdlib.h>
  889.  
  890.      void      free(void * ptr)
  891.  
  892. DESCRIPTION
  893.  
  894.      ■$Free() deallocates the block of memory at  ptr,  which  must
  895.      have been obtained from a call to ■&malloc() or ■&calloc().
  896.  
  897. SEE ALSO
  898.      malloc, calloc
  899.  
  900. %FREOPEN
  901.  
  902. SYNOPSIS
  903.      #include  <stdio.h>
  904.  
  905.      FILE * freopen(char * name, char * mode, FILE * stream)
  906.  
  907. DESCRIPTION
  908.  
  909.      ■'Freopen() closes the given stream (if  open)  then  re-opens
  910.      the  stream attached to the file described by name. The mode
  911.      of opening is given by mode.  It either returns  the  stream
  912.      argument,  if  successful,  or  NULL if not. See ■%fopen() for
  913.      more information.
  914.  
  915. SEE ALSO
  916.      fopen, fclose
  917.  
  918. %FREXP
  919. %LDEXP
  920.  
  921. SYNOPSIS
  922.      #include  <math.h>
  923.  
  924.      double    frexp(double f, int * p)
  925.  
  926.      double    ldexp(double f, int i)
  927.  
  928. DESCRIPTION
  929.  
  930.      ■%Frexp() breaks a floating point  number  into  a  normalized
  931.      fraction  and  an integral power of 2. The integer is stored
  932.      into the int object pointed to by p.  Its return value x  is
  933.      in  the  interval [0.5, 1.0) or zero, and f equals x times 2
  934.      raised to the power stored in *p.  If f is zero, both  parts
  935.      of the result are zero.  ■%Ldexp() performs the reverse opera-
  936.      tion; the integer i is added to the exponent of the floating
  937.      point f and the resultant value returned.
  938. %FSCANF
  939.  
  940. SYNOPSIS
  941.      #include  <stdio.h>
  942.  
  943.      int       fscanf(FILE * stream, char * fmt, ...)
  944.  
  945. DESCRIPTION
  946.  
  947.      This routine performs formatted  input  from  the  specified
  948.      stream.  See ■%scanf() for a full description of the behaviour
  949.      of the routine.  ■'Vfscanf() is similar to ■&fscanf() but  takes
  950.      a variable argument list pointer rather than a list of argu-
  951.      ments. See the description of ■"va_■%start() for  more  informa-
  952.      tion on variable argument lists.
  953.  
  954. SEE ALSO
  955.      scanf, sscanf, fopen, fclose
  956.  
  957. %FSEEK
  958.  
  959. SYNOPSIS
  960.      #include  <stdio.h>
  961.  
  962.      int       fseek(FILE * stream, long offs, int wh)
  963.  
  964. DESCRIPTION
  965.  
  966.      ■%Fseek() positions the ■,file pointer■8 (i.e. a pointer to  the
  967.      next  character  to  be  read  or  written) of the specified
  968.      stream as follows:
  969.                     _____________________________
  970.                      wh     resultant location
  971.                     _____________________________
  972.                      0    offs
  973.                      1    offs+previous location
  974.                      2    offs+length of file
  975.                     _____________________________
  976.                    |||||
  977.  
  978.  
  979.  
  980.                        |||||
  981.  
  982.  
  983.  
  984.                                                 |||||
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991. It should be noted that offs is a signed value. Thus  the  3  al-
  992.      lowed modes give postioning relative to the beginning of the
  993.      file, the current file pointer  and  the  end  of  the  file
  994.      respectively.  EOF  is  returned  if the positioning request
  995.      could not be satisfied. Note however that positioning beyond
  996.      the  end of the file is legal, but will result in an EOF in-
  997.      dication if an attempt is made to read  data  there.  It  is
  998.      quite  in  order  to  write  data beyond the previous end of
  999.      file.  ■%Fseek() correctly accounts for any buffered data.
  1000.  
  1001. SEE ALSO
  1002.      lseek, fopen, fclose
  1003.  
  1004. %FTELL
  1005.  
  1006. SYNOPSIS
  1007.      #include  <stdio.h>
  1008.  
  1009.      long      ftell(FILE * stream)
  1010.  
  1011. DESCRIPTION
  1012.  
  1013.      This function returns the current position of the conceptual
  1014.      read/write  pointer associated with stream.  This is the po-
  1015.      sition relative to the beginning of the  file  of  the  next
  1016.      byte to be read from or written to the file.
  1017.  
  1018. SEE ALSO
  1019.      fseek
  1020.  
  1021. %FWRITE
  1022.  
  1023. SYNOPSIS
  1024.      #include  <stdio.h>
  1025.  
  1026.      int       fwrite(void * buf, size_t size, size_t cnt,
  1027.                    FILE * stream)
  1028.  
  1029. DESCRIPTION
  1030.  
  1031.      Cnt objects of length size bytes will be written from memory
  1032.      at buf, to the specified stream. The number of whole objects
  1033.      written will be returned, or 0 if none could be written. Any
  1034.      return  value not equal to cnt should be treated as an error
  1035.      (cf. ■%fread() ).
  1036.  
  1037. SEE ALSO
  1038.      fread, fopen, fclose
  1039.  
  1040. %_GETARGS
  1041.  
  1042. SYNOPSIS
  1043.      #include  <sys.h>
  1044.  
  1045.      char ** _getargs(char * buf, char * name)
  1046.      extern int _argc_;
  1047.  
  1048. DESCRIPTION
  1049.  
  1050.      This routine performs I/O redirection (CP/M only)  and  wild
  1051.      card expansion. Under MS-DOS I/O redirection is performed by
  1052.      the operating system. It is  called  from  startup  code  to
  1053.      operate  on the command line if the -R option is used to the
  1054.      C command, but may also be called by user-written  code.  If
  1055.      the  buf  argument  is null, it will read lines of text from
  1056.      standard input. If the standard input is a terminal (usually
  1057.      the  console) the name argument will be written to the stan-
  1058.      dard error stream as a prompt. If the buf  argument  is  not
  1059.      null, it will be used as the source of the string to be pro-
  1060.      cessed.  The returned value is a  pointer  to  an  array  of
  1061.      strings, exactly as would be pointed to by the argv argument
  1062.      to the main() function. The number of strings in  the  array
  1063.      may be obtained from the global _argc_. For example, a typi-
  1064.      cal use of this function would be:
  1065.  
  1066.        #include    <sys.h>
  1067.  
  1068.        main(argc, argv)
  1069.        char ** argv;
  1070.        {
  1071.            extern char ** _getargs();
  1072.            extern int    _argc_;
  1073.  
  1074.            if(argc == 1) {     /* no arguments */
  1075.              argv = _getargs(0, ■&myname■");
  1076.              argc = _argc_;
  1077.            }
  1078.            .
  1079.            .
  1080.            .
  1081.        }
  1082.  
  1083.      There will be one string in the array for each word  in  the
  1084.      buffer  processed.   Quotes, either single (') or double (■!)
  1085.      may be used to include white space in ■%words■/. If  any  wild
  1086.      card  characters  (?  or  *) appear in a non-quoted word, it
  1087.      will be expanded into a string of words, one for  each  file
  1088.      matching  the  word. The usual CP/M conventions are followed
  1089.      for this expansion. On CP/M any occurence of the redirection
  1090.      characters  >  and  <  outside quotes will be handled in the
  1091.      following manner:
  1092. > name
  1093.  
  1094.      will cause standard output to  be  redirected  to  the  file
  1095.      name.
  1096. < name
  1097.  
  1098.      will cause standard input to be  redirected  from  the  file
  1099.      name.
  1100. >> name
  1101.  
  1102.      will cause standard output to append to file name.
  1103.  
  1104.  
  1105. White space is optional between the > or < character and the file
  1106.      name, however it is an error for a redirection character not
  1107.      to be followed by a file name.  It is also  an  error  if  a
  1108.      file  cannot  be opened for input or created for output.  An
  1109.      append redirection (>>) will create the file if it does  not
  1110.      exist.   If  the  source of text to be processed is standard
  1111.      input, several lines may be supplied  by  ending  each  line
  1112.      (except  the  last)  with a backslash (\).  This serves as a
  1113.      continuation character. Note that the newline following  the
  1114.      backslash is ignored, and not treated as white space.
  1115. %GETC
  1116.  
  1117. SYNOPSIS
  1118.      #include  <stdio.h>
  1119.  
  1120.      int       getc(FILE * stream)
  1121.      FILE * stream;
  1122.  
  1123. DESCRIPTION
  1124.  
  1125.      One character is read from  the  specified  stream  and  re-
  1126.      turned.  EOF will be returned on end-of-file or error.  This
  1127.      is the macro version of ■%fgetc(), and is defined in stdio.h.
  1128. %GETCH
  1129. %GETCHE
  1130. %UNGETCH
  1131. %PUTCH
  1132.  
  1133. SYNOPSIS
  1134.      #include  <conio.h>
  1135.  
  1136.      char      getch(void)
  1137.      char      getche(void)
  1138.      void      putch(int c)
  1139.  
  1140. DESCRIPTION
  1141.  
  1142.      ■%Getch() reads a single character from the  console  keyboard
  1143.      and  returns  it  without  echoing.  ■&Getche() is similar but
  1144.      does echo the character typed.  ■'Ungetch() will push back one
  1145.      character  such  that  the  next call to ■%getch() or ■&getche()
  1146.      will return that character.  ■%Putch() outputs the character c
  1147.      to  the  console screen, prepending a carriage return if the
  1148.      character is a newline.
  1149.  
  1150. SEE ALSO
  1151.      cgets, cputs
  1152.  
  1153. %GETCHAR
  1154.  
  1155. SYNOPSIS
  1156.      #include  <stdio.h>
  1157.  
  1158.      int       getchar(void)
  1159.  
  1160. DESCRIPTION
  1161.  
  1162.      ■'Getchar() is a ■$getc(■%stdin) operation. It is a macro  defined
  1163.      in  stdio.h.  Note that under normal circumstances getchar()
  1164.      will NOT return unless a carriage return has been  typed  on
  1165.      the  console. To get a single character immediately from the
  1166.      console, use the routine ■%getch().
  1167.  
  1168. SEE ALSO
  1169.      getc, fgetc, freopen, fclose
  1170.  
  1171. %GETCWD
  1172.  
  1173. SYNOPSIS
  1174.      #include  <sys.h>
  1175.  
  1176.      char *    getcwd(int drive)
  1177.  
  1178. DESCRIPTION
  1179.  
  1180.      ■&Getcwd() returns the path name of the current working direc-
  1181.      tory on the specified drive, where drive == 0 represents the
  1182.      current  drive,  drive  ==  1  represents  A:,  drive  ==  2
  1183.      represents B: etc.  The return value is a pointer to a stat-
  1184.      ic area of memory which will be overwritten on the next call
  1185.      to ■&getcwd().
  1186.  
  1187. SEE ALSO
  1188.      chdir
  1189.  
  1190. %GETENV
  1191.  
  1192. SYNOPSIS
  1193.      #include  <stdlib.h>
  1194.  
  1195.      char *    getenv(char * s)
  1196.      extern char **    environ;
  1197.  
  1198. DESCRIPTION
  1199.  
  1200.      ■&Getenv() will search the vector of environment  strings  for
  1201.      one  matching  the  argument  supplied, and return the value
  1202.      part of that environment string. For  example,  if  the  en-
  1203.      vironment contains the string
  1204.  
  1205.            COMSPEC=A:\COMMAND.COM
  1206.  
  1207.      then ■&getenv(■5_C_O_M_S_P_E_C■G) will return A:\COMMAND.COM.  The glo-
  1208.      bal variable environ is a pointer to an array of pointers to
  1209.      environment strings, terminated by a null pointer. This  ar-
  1210.      ray is initialized at startup time under MS-DOS from the en-
  1211.      vironment pointer supplied when the  program  was  executed.
  1212.      Under  CP/M  no  such  environment is supplied, so the first
  1213.      call to ■&getenv() will attempt to open a file in the  current
  1214.      user  number  on the current drive called ENVIRON. This file
  1215.      should contain definitions  for  any  environment  variables
  1216.      desired to be accessible to the program, e.g.
  1217.  
  1218.      HITECH=0:C:
  1219.  
  1220.      Each variable definition should be on a separate line,  con-
  1221.      sisting  of  the  variable name (conventionally all in upper
  1222.      case) followed without intervening white space by  an  equal
  1223.      sign ('=') then the value to be assigned to that variable.
  1224. %GETS
  1225.  
  1226. SYNOPSIS
  1227.      #include  <stdio.h>
  1228.  
  1229.      char * gets(char * s)
  1230.  
  1231. DESCRIPTION
  1232.  
  1233.      ■$Gets() reads a line from standard input into the  buffer  at
  1234.      s,  deleting  the newline (cf. ■%fgets() ). The buffer is null
  1235.      terminated. It returns its argument, or NULL on end-of-file.
  1236.  
  1237. SEE ALSO
  1238.      fgets, freopen
  1239.  
  1240. %GETUID
  1241.  
  1242. SYNOPSIS
  1243.      #include  <sys.h>
  1244.  
  1245.      int getuid(void)
  1246.  
  1247. DESCRIPTION
  1248.  
  1249.      ■&Getuid() returns the current  user  number.   On  CP/M,  the
  1250.      current  user  number  determines the user number associated
  1251.      with an opened or created file, unless overridden by an  ex-
  1252.      plicit user number prefix in the file name.
  1253.  
  1254. SEE ALSO
  1255.      setuid, open
  1256.  
  1257. %GETW
  1258.  
  1259. SYNOPSIS
  1260.      #include  <stdio.h>
  1261.  
  1262.      int       getw(FILE * stream)
  1263.  
  1264. DESCRIPTION
  1265.  
  1266.      ■$Getw() returns one word (16 bits for the Z80 and 8086)  from
  1267.      the  nominated  stream.  EOF is returned on end-of-file, but
  1268.      since this is a perfectly good word, the ■$feof() macro should
  1269.      be used for testing for end-of-file.  When reading the word,
  1270.      no special alignment in the file is necessary, as  the  read
  1271.      is  done  by two consecutive ■$getc()'s.  The byte ordering is
  1272.      however undefined. The word read should in general have been
  1273.      written by ■$putw().
  1274.  
  1275. SEE ALSO
  1276.      putw, getc, fopen, fclose
  1277.  
  1278. %GMTIME
  1279. %LOCALTIME
  1280.  
  1281. SYNOPSIS
  1282.      #include  <time.h>
  1283.  
  1284.      struct tm *       gmtime(time_t * t)
  1285.      struct tm *       localtime(time_t * t)
  1286.  
  1287. DESCRIPTION
  1288.  
  1289.      These functions convert the time pointed to by t which is in
  1290.      seconds  since  00:00:00  on Jan 1, 1970, into a broken down
  1291.      time stored in a structure as defined in  ■$time.■!h.   ■&Gmtime()
  1292.      performs a straight conversion, while ■)localtime() takes into
  1293.      account the contents of the global integer time_zone.   This
  1294.      should  contain  the  number  of minutes that the local time
  1295.      zone is WESTWARD of Greenwich. Since there is no  way  under
  1296.      MS-DOS  of  actually  pre-determining this value, by default
  1297.      ■)localtime() will return the same result as ■&gmtime().
  1298.  
  1299. SEE ALSO
  1300.      ctime, asctime, time
  1301.  
  1302. %INP
  1303. %OUTP
  1304.  
  1305. SYNOPSIS
  1306.      char inp(unsigned port)
  1307.  
  1308.      void outp(unsigned, unsigned data)
  1309.  
  1310. DESCRIPTION
  1311.  
  1312.      These routines read and write bytes to and from  I/O  ports.
  1313.      ■#Inp()  returns  the  data byte read from the specified port,
  1314.      and ■$outp() outputs the data byte to the specified port.
  1315. %INT86
  1316. %INT86X
  1317. %INTDOS
  1318. %INTDOSX
  1319.  
  1320. SYNOPSIS
  1321.      #include  <dos.h>
  1322.  
  1323.      int       int86(int intno, union REGS * inregs,
  1324.                union REGS * outregs)
  1325.      int       int86x(int intno, union REGS inregs,
  1326.                union REGS outregs, struct SREGS * segregs)
  1327.      int       intdos(union REGS * inregs, union REGS * outregs)
  1328.      int       intdosx(union REGS * inregs, union REGS * outregs,
  1329.                struct SREGS * segregs)
  1330.  
  1331. DESCRIPTION
  1332.  
  1333.      These functions allow calling of software interrupts from  C
  1334.      programs.   ■%Int86() and ■&int86x() execute the software inter-
  1335.      rupt specified by ■%intno while ■&intdos() and ■'intdosx() execute
  1336.      interrupt  21(hex),  which  is the MS-DOS system call inter-
  1337.      rupt.  The inregs pointer should point to a union containing
  1338.      values  for  each of the general purpose registers to be set
  1339.      when executing the interrupt, and the values of  the  regis-
  1340.      ters  on  return  are  copied  into  the union pointed to by
  1341.      outregs. The ■!x versions of the calls also take a pointer  to
  1342.      a  union  defining  the segment register values to be set on
  1343.      execution of the interrupt, though only ES and DS are  actu-
  1344.      ally set from this structure.
  1345.  
  1346. SEE ALSO
  1347.      segread
  1348.  
  1349. %ISALNUM
  1350. %ISALPHA
  1351. %ISDIGIT
  1352. %ISLOWER
  1353. %ISASCII
  1354. %ISCNTRL
  1355. %ISSPACE
  1356. %ISUPPER
  1357. %ISPUNCT
  1358.  
  1359. SYNOPSIS
  1360.      #include <ctype.h>
  1361.  
  1362.      isalnum(char c)
  1363.      isalpha(char c)
  1364.      isascii(char c)
  1365.      iscntrl(char c)
  1366.      isdigit(char c)
  1367.      islower(char c)
  1368.      isprint(char c)
  1369.      isgraph(char c)
  1370.      ispunct(char c)
  1371.      isspace(char c)
  1372.      isupper(char c)
  1373.      isxdigit(char c)
  1374.      char c;
  1375.  
  1376. DESCRIPTION
  1377.  
  1378.      These macros, defined in ctype.h, test the supplied  charac-
  1379.      ter  for  membership in one of several overlapping groups of
  1380.      characters. Note that all except isascii are defined  for  ■!c
  1381.      iff ■'isascii(■!c) is true.
  1382.  
  1383.        isalnum(c)  c is alphanumeric
  1384.        isalpha(c)  c is in A-Z or a-z
  1385.        isascii(c)  c is a 7 bit ascii character
  1386.        iscntrl(c)  c is a control character
  1387.        isdigit(c)  c is a decimal digit
  1388.        islower(c)  c is in a-z
  1389.        isprint(c)  c is a printing char
  1390.        isgraph(c)  c is a non-space printable character
  1391.        ispunct(c)  c is not alphanumeric
  1392.        isspace(c)  c is a space, tab or newline
  1393.        isupper(c)  c is in A-Z
  1394.        isxdigit(c) c is in 0-9 or a-f or A-F
  1395.  
  1396.  
  1397. SEE ALSO
  1398.      toupper, tolower, toascii
  1399.  
  1400. %ISATTY
  1401.  
  1402. SYNOPSIS
  1403.      #include  <unixio.h>
  1404.  
  1405.      int isatty(int fd)
  1406.  
  1407. DESCRIPTION
  1408.  
  1409.      This tests the type of the file associated with fd.  It  re-
  1410.      turns  true  if  the  file is attached to a tty-like device.
  1411.      This would normally be used for testing if standard input is
  1412.      coming  from  a  file  or  the  console.  For  testing STDIO
  1413.      streams, use ■&isatty(■&fileno(■&stream)).
  1414. %KBHIT
  1415.  
  1416. SYNOPSIS
  1417.      #include  <conio.h>
  1418.  
  1419.      int       kbhit(void)
  1420.  
  1421. DESCRIPTION
  1422.  
  1423.      This function returns 1 if a character has been  pressed  on
  1424.      the  console  keyboard,  0 otherwise. Normally the character
  1425.      would then be read via ■%getch().
  1426.  
  1427. SEE ALSO
  1428.      getch, getche
  1429.  
  1430. %LONGJMP
  1431.  
  1432. SYNOPSIS
  1433.      #include <setjmp.h>
  1434.  
  1435.      void      longjmp(jmp_buf buf, int val)
  1436.  
  1437. DESCRIPTION
  1438.  
  1439.      ■'Longjmp(), in conjunction with ■&setjmp(), provides a  mechan-
  1440.      ism  for  non-local  gotos.  To  use this facility, ■&setjmp()
  1441.      should be called with a jmp_buf argument in some outer level
  1442.      function. The call from ■&setjmp() will return 0. To return to
  1443.      this level of execution, ■&lonjmp() may  be  called  with  the
  1444.      same jmp_buf argument from an inner level of execution. Note
  1445.      however that the function which called ■&setjmp()  must  still
  1446.      be active when ■'longjmp() is called. Breach of this rule will
  1447.      cause disaster, due to the use of a stack containing invalid
  1448.      data.  The  val  argument to ■'longjmp() will be the value ap-
  1449.      parently returned from the ■&setjmp(). This should normally be
  1450.      non-zero,  to distinguish it from the genuine ■&setjmp() call.
  1451.      For example:
  1452.  
  1453.        #include <setjmp.h>
  1454.  
  1455.        static jmp_buf    jb_err;
  1456.  
  1457.        main()
  1458.        {
  1459.            if(setjmp(jb_err)) {
  1460.              printf(■2An error occured\n■");
  1461.              exit(1);
  1462.            }
  1463.            a_func();
  1464.        }
  1465.  
  1466.        a_func()
  1467.        {
  1468.            if(do_whatever() != 0)
  1469.              longjmp(jb_err, 1);
  1470.            if(do_something_else() != 0)
  1471.              longjmp(jb_err, 2);
  1472.        }
  1473.  
  1474.  
  1475.  
  1476. The calls to ■'longjmp() above will never return; rather  the  call
  1477.      to  ■&setjmp()  will appear to return, but with a return value
  1478.      equal to the argument supplied to ■'longjmp().
  1479.  
  1480. SEE ALSO
  1481.      setjmp
  1482.  
  1483. %LSEEK
  1484.  
  1485. SYNOPSIS
  1486.      #include  <unixio.h>
  1487.  
  1488.      long lseek(int fd, long offs, int wh)
  1489.  
  1490. DESCRIPTION
  1491.  
  1492.      This function operates in an analogous  manner  to  ■%fseek(),
  1493.      however it does so on unbuffered low-level i/o file descrip-
  1494.      tors, rather than on STDIO  streams.  It  also  returns  the
  1495.      resulting  pointer  location.  Thus ■%lseek(■"fd, ■"0L, ■!1) returns
  1496.      the current pointer location without moving it.  -1  is  re-
  1497.      turned on error.
  1498.  
  1499. SEE ALSO
  1500.      open, close, read, write
  1501.  
  1502. %MALLOC
  1503.  
  1504. SYNOPSIS
  1505.      #include  <stdlib.h>
  1506.  
  1507.      void * malloc(size_t cnt)
  1508.  
  1509. DESCRIPTION
  1510.  
  1511.      ■&Malloc() attempts to allocate cnt bytes of memory  from  the
  1512.      ■$heap■V,  the  dynamic memory allocation area. If successful,
  1513.      it returns a pointer to the block, otherwise 0 is  returned.
  1514.      The memory so allocated may be freed with ■$free(), or changed
  1515.      in size via  ■'realloc().  ■&Malloc()  calls  ■$sbrk()  to  obtain
  1516.      memory, and is in turn called by ■&calloc(). ■&Malloc() does not
  1517.      clear the memory it obtains.
  1518.  
  1519. SEE ALSO
  1520.      calloc, free, realloc
  1521.  
  1522. %MEMSET
  1523. %MEMCPY
  1524. %MEMCMP
  1525.  
  1526. SYNOPSIS
  1527.      #include  <string.h>
  1528.  
  1529.      void      memset(void s, char c, int n)
  1530.      void      memcpy(void * d, void * s, int n)
  1531.      int       memcmp(void * s1, void * s2, int n)
  1532.  
  1533. DESCRIPTION
  1534.  
  1535.      ■&Memset() initializes n bytes of memory starting at the loca-
  1536.      tion pointed to by s with the character c. ■&Memcpy() copies n
  1537.      bytes of memory starting from the location pointed to  by  s
  1538.      to the block of memory pointed to by d.  The result of copy-
  1539.      ing overlapping blocks is undefined.  ■&Memcmp() compares  two
  1540.      blocks  of  memory,  of length n, and returns a signed value
  1541.      similar to ■'strncmp(). Unlike ■'strncmp() the comparision  does
  1542.      not  stop  on a null character. The ascii collating sequence
  1543.      is used for the comparision, but  the  effect  of  including
  1544.      non-ascii  characters  in  the memory blocks on the sense of
  1545.      the return value is indeterminate.
  1546.  
  1547. SEE ALSO
  1548.      strncpy, strncmp
  1549.  
  1550. %MKDIR
  1551. %RMDIR
  1552.  
  1553. SYNOPSIS
  1554.      #include  <sys.h>
  1555.  
  1556.      int       mkdir(char * s)
  1557.      int       rmdir(char * s)
  1558.  
  1559. DESCRIPTION
  1560.  
  1561.      These functions allow the creation  (■%mkdir())  and  deletion
  1562.      (■%rmdir()) of sub-directories under the MS-DOS operating sys-
  1563.      tem. The argument s may be an arbitrary  pathname,  and  the
  1564.      return  value  will be -1 if the creation or removal was un-
  1565.      successful.
  1566.  
  1567. SEE ALSO
  1568.      chdir
  1569.  
  1570. %MSDOS
  1571. %MSDOSCX
  1572.  
  1573. SYNOPSIS
  1574.      #include  <dos.h>
  1575.  
  1576.      long      msdos(int ax, int dx, int cx,
  1577.                int bx, int si, int di)
  1578.      long      msdoscx(int ax, int dx, int cx,
  1579.                int bx, int si, int di)
  1580.  
  1581. DESCRIPTION
  1582.  
  1583.      These functions allow direct access to MS-DOS system  calls.
  1584.      The  arguments  will  be  placed in the registers implied by
  1585.      their names, while the return value will be the contents  of
  1586.      AX  and  DX  (for ■%msdos()) or the contents of DX and CX (for
  1587.      ■'msdoscx()).  Only as many arguments  as  necessary  need  be
  1588.      supplied, e.g. if only AH and DX need have specified valued,
  1589.      then only 2 argument would be required. The following  piece
  1590.      of code outputs a form-feed to the printer.
  1591.  
  1592.            msdos(0x500, '\f');
  1593.  
  1594.      Note that the system call number (in this case  5)  must  be
  1595.      multiplied  by 0x100 since MS-DOS expects the call number in
  1596.      AH, the high byte of AX.
  1597.  
  1598. SEE ALSO
  1599.      intdos, intdosx, int86, int86x
  1600.  
  1601. %OPEN
  1602.  
  1603. SYNOPSIS
  1604.      #include  <unixio.h>
  1605.  
  1606.      int       open(char * name, int mode)
  1607.  
  1608. DESCRIPTION
  1609.  
  1610.      ■$Open() is the fundamental means of opening files for reading
  1611.      and  writing.   The file specified by name is sought, and if
  1612.      found is opened for reading, writing or both. Mode is encod-
  1613.      ed as follows:
  1614.  
  1615.        Mode  Meaning
  1616.        0     Open for reading only
  1617.        1     Open for writing only
  1618.        2     Open for both reading and writing
  1619.  
  1620.  
  1621.  
  1622. The file must already exist - if it does not, ■%creat()  should  be
  1623.      used  to create it.  On a successful open, a file descriptor
  1624.      is returned. This is a non-negative  integer  which  may  be
  1625.      used  to  refer  to the open file subsequently.  If the open
  1626.      fails, -1 is returned.  The syntax of a CP/M filename is:
  1627.  
  1628.        [uid:][drive:]name.type
  1629.  
  1630.  
  1631.  
  1632. where uid is a decimal number 0 to 15, drive is a letter A  to  P
  1633.      or  a  to  p,  name  is 1 to 8 characters and type is 0 to 3
  1634.      characters. Though there are few  inherent  restrictions  on
  1635.      the  characters in the name and type, it is recommended that
  1636.      they be restricted to the alphanumerics and standard  print-
  1637.      ing  characters.   Use of strange characters may cause prob-
  1638.      lems in accessing and/or deleting the file.
  1639.  
  1640.  
  1641. One or both of uid: and drive: may be omitted; if both  are  sup-
  1642.      plied,  the  uid: must come first. Note that the [ and ] are
  1643.      meta-symbols only. Some examples are:
  1644.  
  1645.        fred.dat
  1646.        file.c
  1647.        0:xyz.com
  1648.        0:a:file1.p
  1649.        a:file2.
  1650.  
  1651.  
  1652.  
  1653. If the uid: is omitted, the file will be sought with uid equal to
  1654.      the  current user number, as returned by getuid(). If drive:
  1655.      is omitted, the file will be sought on the currently select-
  1656.      ed drive. The following special file names are recognized:
  1657.  
  1658.        lst:  Accesses the list device - write only
  1659.        pun:  Accesses the punch device - write only
  1660.        rdr:  Accesses the reader device - read only
  1661.        con:  Accesses the system console - read/write
  1662.  
  1663.  
  1664.  
  1665. File names may be in any case - they are converted to upper  case
  1666.      during processing of the name.
  1667.  
  1668.  
  1669. MS-DOS filenames may be any valid MS-DOS 2.xx filename, e.g.
  1670.  
  1671.        fred.nrk
  1672.        A:\\HITECH\\STDIO.H
  1673.  
  1674.  
  1675.  
  1676. The special device names (e.g. CON,  LST)  are  also  recognized.
  1677.      These do not require (and should not have) a trailing colon.
  1678.  
  1679. SEE ALSO
  1680.      close, fopen, fclose, read, write, creat
  1681.  
  1682.      SYNOPSIS
  1683.      #include  <stdio.h>
  1684.  
  1685.      void      perror(char * s)
  1686.  
  1687. DESCRIPTION
  1688.  
  1689.      This routine will print on the stderr stream the argument s,
  1690.      followed  by  a descriptive message detailing the last error
  1691.      returned from an open, close  read  or  write  call.  Unfor-
  1692.      tunately CP/M does not provide definitive information relat-
  1693.      ing to the error, except in the case of  a  random  read  or
  1694.      write.  Thus  this  routine  is  of limited usefulness under
  1695.      CP/M. MS-DOS provides much more information however, and use
  1696.      of  ■&perror() after MS-DOS file handling calls will certainly
  1697.      give useful diagnostics.
  1698.  
  1699. SEE ALSO
  1700.      open, close, read, write
  1701.  
  1702. %PRINTF
  1703. %VPRINTF
  1704.  
  1705. SYNOPSIS
  1706.      #include  <stdio.h>
  1707.  
  1708.      int       printf(char * fmt, ...)
  1709.      int       vprintf(char * fmt, va_list va_arg)
  1710.  
  1711. DESCRIPTION
  1712.  
  1713.      ■&Printf() is a formatted output routine, operating on stdout.
  1714.      There are corresponding routines operating on a given stream
  1715.      (■'fprintf()) or into a string buffer (■'sprintf()). ■&Printf() is
  1716.      passed  a  format string, followed by a list of zero or more
  1717.      arguments. In the format string  are  conversion  specifica-
  1718.      tions,  each  of which is used to print out one of the argu-
  1719.      ment list values.  Each conversion specification is  of  the
  1720.      form  %m.nc  where the percent symbol % introduces a conver-
  1721.      sion, followed by an optional width specification m.   n  is
  1722.      an  optional precision specification (introduced by the dot)
  1723.      and c is a letter specifying the type of the conversion.   A
  1724.      minus  sign  ('-')  preceding  m  indicates left rather than
  1725.      right adjustment of the converted value in the field.  Where
  1726.      the  field width is larger than required for the conversion,
  1727.      blank padding is performed at the left or  right  as  speci-
  1728.      fied.  Where  right  adjustment  of  a numeric conversion is
  1729.      specified, and the first digit of m is 0, then padding  will
  1730.      be performed with zeroes rather than blanks.
  1731.  
  1732.  
  1733. If the character * is used in place of a decimal  constant,  e.g.
  1734.      in  the  format %*d, then one integer argument will be taken
  1735.      from the list to provide that value.  The types  of  conver-
  1736.      sion are:
  1737. f
  1738.  
  1739.      Floating point - m is the total width and n is the number of
  1740.      digits after the decimal point.  If n is omitted it defaults
  1741.      to 6.
  1742. e
  1743.  
  1744.      Print the corresponding  argument  in  scientific  notation.
  1745.      Otherwise similar to f.
  1746. g
  1747.  
  1748.      Use e or f format,  whichever  gives  maximum  precision  in
  1749.      minimum width.
  1750. o x X u d
  1751.  
  1752.      Integer conversion - in radices 8, 16, 10 and 10 respective-
  1753.      ly. The conversion is signed in the case of d, unsigned oth-
  1754.      erwise. The precision value is the total number of digits to
  1755.      print,  and  may be used to force leading zeroes. E.g. %8.4x
  1756.      will print at least  4  hex  digits  in  an  8  wide  field.
  1757.      Preceding  the key letter with an l indicates that the value
  1758.      argument is a long integer or unsigned value.  The letter  X
  1759.      prints  out hexadecimal numbers using the upper case letters
  1760.      ■!A-■!F rather than ■!a-■!f as would be printed when using x.
  1761. s
  1762.  
  1763.      Print a string - the value argument is assumed to be a char-
  1764.      acter  pointer. At most n characters from the string will be
  1765.      printed, in a field m characters wide.
  1766. c
  1767.  
  1768.      The argument is assumed to be  a  single  character  and  is
  1769.      printed literally.
  1770.  
  1771.  
  1772. Any other characters used as conversion  specifications  will  be
  1773.      printed.  Thus  %% will produce a single percent sign.  Some
  1774.      examples:
  1775.  
  1776.        printf(■-Total = %4d%%■%, 23)
  1777.              yields 'Total =   23%'
  1778.        printf(■+Size is %lx■( , size)
  1779.              where size is a long, prints size
  1780.              as hexadecimal.
  1781.        printf(■+Name = %.8s■", ■+a1234567890■!)
  1782.              yields 'Name = a1234567'
  1783.        printf(■%xx%*d■', 3, 4)
  1784.              yields 'xx  4'
  1785.  
  1786.  
  1787.  
  1788. Printf returns EOF on error, 0 otherwise.  ■'Vprintf()  is  similar
  1789.      to ■&printf() but takes a variable argument list pointer rath-
  1790.      er  than  a  list  of  arguments.  See  the  description  of
  1791.      ■"va_■%start() for more information on variable argument lists.
  1792.  
  1793. SEE ALSO
  1794.      fprintf, sprintf
  1795.  
  1796. %PUTC
  1797.  
  1798. SYNOPSIS
  1799.      #include  <stdio.h>
  1800.  
  1801.      int       putc(int c, FILE * stream)
  1802.  
  1803. DESCRIPTION
  1804.  
  1805.      ■$Putc() is the macro version of ■%fputc()  and  is  defined  in
  1806.      stdio.h. See ■%fputc() for a description of its behaviour.
  1807.  
  1808. SEE ALSO
  1809.      fputc, getc, fopen, fclose
  1810.  
  1811. %PUTCHAR
  1812.  
  1813. SYNOPSIS
  1814.      #include  <stdio.h>
  1815.  
  1816.      int       putchar(int c)
  1817.  
  1818. DESCRIPTION
  1819.  
  1820.      ■'Putchar() is  a  ■$putc()  operation  on  stdout,  defined  in
  1821.      stdio.h.
  1822.  
  1823. SEE ALSO
  1824.      putc, getc, freopen, fclose
  1825.  
  1826. %PUTS
  1827.  
  1828. SYNOPSIS
  1829.      #include  <stdio.h>
  1830.  
  1831.      int       puts(char * s)
  1832.  
  1833. DESCRIPTION
  1834.  
  1835.      ■$Puts() writes the string s to the stdout stream, appending a
  1836.      newline. The null terminating the string is not copied.  EOF
  1837.      is returned on error.
  1838.  
  1839. SEE ALSO
  1840.      fputs, gets, freopen, fclose
  1841.  
  1842. %PUTW
  1843.  
  1844. SYNOPSIS
  1845.      #include  <stdio.h>
  1846.  
  1847.      int       putw(int w, FILE * stream)
  1848.  
  1849. DESCRIPTION
  1850.  
  1851.      ■$Putw() copies the word w to the given stream. It returns  w,
  1852.      except  on  error, in which case EOF is returned. Since this
  1853.      is a good integer, ■&ferror() should be used to check for  er-
  1854.      rors.
  1855.  
  1856. SEE ALSO
  1857.      getw, fopen, fclose
  1858.  
  1859. %QSORT
  1860.  
  1861. SYNOPSIS
  1862.      #include  <stdlib.h>
  1863.  
  1864.      void      qsort(void * base, size_t nel,
  1865.                size_t width, int (*func)())
  1866.  
  1867. DESCRIPTION
  1868.  
  1869.      ■%Qsort() is an implementation of the quicksort algorithm.  It
  1870.      sorts an array of nel items, each of length width bytes, lo-
  1871.      cated contiguously in memory at base.  Func is a pointer  to
  1872.      a  function  used by ■%qsort() to compare items. It calls func
  1873.      with pointers to two items to be  compared.   If  the  first
  1874.      item is considered to be greater than, equal to or less than
  1875.      the second then ■$func() should return a  value  greater  than
  1876.      zero, equal to zero or less than zero respectively.
  1877.  
  1878.        static short      array[100];
  1879.  
  1880.        #define SIZE  sizeof array/sizeof array[0]
  1881.        a_func(p1, p2)
  1882.        short * p1, * p2;
  1883.        {
  1884.              return *p1 - *p2;
  1885.        }
  1886.  
  1887.        sort_em()
  1888.        {
  1889.              qsort(array, SIZE,
  1890.                    sizeof array[0], a_func);
  1891.        }
  1892.  
  1893.  
  1894.  
  1895. This will sort the array into ascending values. Note the  use  of
  1896.      sizeof  to make the code independent of the size of a short,
  1897.      or the number of elements in the array.
  1898. %RAND
  1899.  
  1900. SYNOPSIS
  1901.      #include  <stdlib.h>
  1902.  
  1903.      int rand(void)
  1904.  
  1905. DESCRIPTION
  1906.  
  1907.      ■$Rand() is a pseudo-random number generator.  It  returns  an
  1908.      integer  in the range 0 to 32767, which changes in a pseudo-
  1909.      random fashion on each call.
  1910.  
  1911. SEE ALSO
  1912.      srand
  1913.  
  1914. %READ
  1915.  
  1916. SYNOPSIS
  1917.      #include  <unixio.h>
  1918.  
  1919.      int       read(int fd, void * buf, size_t cnt)
  1920.  
  1921. DESCRIPTION
  1922.  
  1923.      ■$Read() will read from the file associated with fd up to  cnt
  1924.      bytes into a buffer located at buf. It returns the number of
  1925.      bytes actually read. A zero return indicates end-of-file.  A
  1926.      negative  return  indicates  error.  Fd should have been ob-
  1927.      tained from a previous call to ■$open().  It is  possible  for
  1928.      ■$read()  to return less bytes than requested, e.g. when read-
  1929.      ing from the console, in which case  ■$read()  will  read  one
  1930.      line of input.
  1931.  
  1932. SEE ALSO
  1933.      open, close, write
  1934.  
  1935. %REALLOC
  1936.  
  1937. SYNOPSIS
  1938.      void * realloc(void * ptr, size_t cnt)
  1939.  
  1940. DESCRIPTION
  1941.  
  1942.      ■'Realloc() frees the block of memory  at  ptr,  which  should
  1943.      have  been obtained by a previous call to ■&malloc(), ■&calloc()
  1944.      or ■'realloc(), then attempts to allocate cnt bytes of dynamic
  1945.      memory,  and  if successful copies the contents of the block
  1946.      of memory located at ptr into the new block.  At most, ■%real-
  1947.      ■#loc()  will  copy  the number of bytes which were in the old
  1948.      block, but if the new block is smaller, will only  copy  cnt
  1949.      bytes.  If the block could not be allocated, 0 is returned.
  1950.  
  1951.  
  1952.  
  1953. SEE ALSO
  1954.      malloc, calloc, realloc
  1955.  
  1956. %REMOVE
  1957.  
  1958. SYNOPSIS
  1959.      #include  <stdio.h>
  1960.  
  1961.      int       remove(char * s)
  1962.  
  1963. DESCRIPTION
  1964.  
  1965.      ■&Remove() will attempt to remove the file named by the  argu-
  1966.      ment  s  from  the directory. A return value of -1 indicates
  1967.      that the attempt failed.
  1968.  
  1969. SEE ALSO
  1970.      unlink
  1971.  
  1972. %RENAME
  1973.  
  1974. SYNOPSIS
  1975.      #include  <stdio.h>
  1976.  
  1977.      int       rename(char * name1, char * name2)
  1978.  
  1979. DESCRIPTION
  1980.  
  1981.      The file named by name1 will be renamed to name2. -1 will be
  1982.      returned if the rename was not successful. Note that renames
  1983.      across user numbers or drives are not permitted.
  1984.  
  1985. SEE ALSO
  1986.      open, close, unlink
  1987.  
  1988. %REWIND
  1989.  
  1990. SYNOPSIS
  1991.      #include  <stdio.h>
  1992.  
  1993.      int       rewind(FILE * stream)
  1994.  
  1995. DESCRIPTION
  1996.  
  1997.      This function will attempt  to  re-position  the  read/write
  1998.      pointer  of  the  nominated  stream  to the beginning of the
  1999.      file. A return value of -1 indicates that  the  attempt  was
  2000.      not  successful,  perhaps  because  the stream is associated
  2001.      with a non-random access file such as a character device.
  2002.  
  2003. SEE ALSO
  2004.      fseek, ftell
  2005.  
  2006. %SBRK
  2007.  
  2008. SYNOPSIS
  2009.      char *    sbrk(int incr)
  2010.  
  2011. DESCRIPTION
  2012.  
  2013.      ■$Sbrk() increments the current highest memory location  allo-
  2014.      cated to the program by incr bytes.  It returns a pointer to
  2015.      the  previous  highest  location.  Thus  ■$sbrk(■!0)  returns  a
  2016.      pointer  to  the  current highest location, without altering
  2017.      its value.  If there is insufficient memory to  satisfy  the
  2018.      request, -1 is returned.
  2019.  
  2020. SEE ALSO
  2021.      brk, malloc, calloc, realloc, free
  2022.  
  2023. %SCANF
  2024.  
  2025. SYNOPSIS
  2026.      #include  <stdio.h>
  2027.  
  2028.      int       scanf(char * fmt, ...)
  2029.      int       vscanf(char *, va_list ap);
  2030.  
  2031. DESCRIPTION
  2032.  
  2033.      ■%Scanf() performs formatted  input  (■*de-editing■,)  from  the
  2034.      stdin stream. Similar functions are available for streams in
  2035.      general, and for strings.  The function ■&vscanf() is similar,
  2036.      but takes a pointer to an argument list rather than a series
  2037.      of additional arguments. This pointer should have been  ini-
  2038.      tialized  with  ■"va_■%start().   The input conversions are per-
  2039.      formed according to the fmt string; in general  a  character
  2040.      in  the  format  string must match a character in the input;
  2041.      however a space character in the format  string  will  match
  2042.      zero  or  more  ■,white  space■> characters in the input, i.e.
  2043.      spaces, tabs or newlines.  A conversion specification  takes
  2044.      the  form  of the character %, optionally followed by an as-
  2045.      signment suppression character ('*'), optionally followed by
  2046.      a  numerical  maximum  field width, followed by a conversion
  2047.      specification character. Each conversion specification,  un-
  2048.      less  it  incorporates the assignment suppression character,
  2049.      will assign a value to the variable pointed at by  the  next
  2050.      argument. Thus if there are two conversion specifications in
  2051.      the fmt string, there should be two additional pointer argu-
  2052.      ments.  The conversion characters are as follows:
  2053. o x d
  2054.  
  2055.      Skip white space, then convert a number in base 8, 16 or  10
  2056.      radix  respectively.  If a field width was supplied, take at
  2057.      most that many characters from the input.  A  leading  minus
  2058.      sign will be recognized.
  2059. f
  2060.  
  2061.      Skip white space, then convert a floating number  in  either
  2062.      conventional  or  scientific  notation.  The field width ap-
  2063.      plies as above.
  2064. s
  2065.  
  2066.      Skip white space, then copy a  maximal  length  sequence  of
  2067.      non-white-space  characters.  The pointer argument must be a
  2068.      pointer to char.  The field width will limit the  number  of
  2069.      characters  copied.  The  resultant  string  will  be  null-
  2070.      terminated.
  2071. c
  2072.  
  2073.      Copy the next character from the input. The pointer argument
  2074.      is  assumed  to  be  a  pointer to char. If a field width is
  2075.      specified, then copy that many characters. This differs from
  2076.      the  s  format  in  that  white space does not terminate the
  2077.      character sequence.
  2078.  
  2079.  
  2080. The conversion characters o, x, u, d and f may be preceded by  an
  2081.      l  to  indicate that the corresponding pointer argument is a
  2082.      pointer to long or double as appropriate. A preceding h will
  2083.      indicate  that  the  pointer  argument is a pointer to short
  2084.      rather than int.
  2085.  
  2086.  
  2087. ■%Scanf() returns the number of successful conversions; EOF is  re-
  2088.      turned  if  end-of-file was seen before any conversions were
  2089.      performed. Some examples are:
  2090.  
  2091.        scanf(■%%d %s■), &a, &s)
  2092.              with input ■)      12s
  2093.        will assign 12 to a, and ■!s■& to s.
  2094.  
  2095.        scanf(■(%4cd %lf■), &c, &f)
  2096.              with input ■* abcd -3.5
  2097.        will assign ■$ abc■5 to c, and -3.5 to f.
  2098.  
  2099.  
  2100. SEE ALSO
  2101.      fscanf, sscanf, printf, va_arg
  2102.  
  2103. %SEGREAD
  2104.  
  2105. SYNOPSIS
  2106.      #include  <dos.h>
  2107.      int       segread(struct SREGS * segregs)
  2108.  
  2109. DESCRIPTION
  2110.  
  2111.      ■'Segread() copies the values of the  segment  registers  into
  2112.      the structure pointed to by segregs.
  2113.  
  2114. SEE ALSO
  2115.      int86, int86x, intdos, intdosx
  2116.  
  2117. %SETJMP
  2118.  
  2119. SYNOPSIS
  2120.      #include <setjmp.h>
  2121.      int       setjmp(jmp_buf buf)
  2122.  
  2123. DESCRIPTION
  2124.  
  2125.      ■&Setjmp() is used with ■'longjmp()  for  non-local  gotos.  See
  2126.      ■'longjmp() for further information.
  2127.  
  2128. SEE ALSO
  2129.      longjmp
  2130.  
  2131. %SETUID
  2132.  
  2133. SYNOPSIS
  2134.      #include  <sys.h>
  2135.  
  2136.      void setuid(int uid)
  2137.  
  2138. DESCRIPTION
  2139.  
  2140.      ■&Setuid() will set the current user number to uid. Uid should
  2141.      be a number in the range 0-15.
  2142.  
  2143. SEE ALSO
  2144.      getuid
  2145.  
  2146. %SETVBUF
  2147. %SETBUF
  2148.  
  2149. SYNOPSIS
  2150.      #include  <stdio.h>
  2151.  
  2152.      int       setvbuf(FILE * stream, char * buf,
  2153.                int mode, size_t size);
  2154.      void      setbuf(FILE * stream, char * buf)
  2155.  
  2156. DESCRIPTION
  2157.  
  2158.      The ■'setvbuf() function allows the buffering behaviour  of  a
  2159.      STDIO  stream to be altered. It supersedes the function ■$set-
  2160.      ■#buf() which is retained for  backwards  compatibility.   The
  2161.      arguments to ■'setvbuf() are as follows: stream designates the
  2162.      STDIO stream to be affected; buf is a pointer  to  a  buffer
  2163.      which will be used for all subsequent I/O operations on this
  2164.      stream. If buf is null, then the  routine  will  allocate  a
  2165.      buffer from the heap if necessary, of size BUFSIZ as defined
  2166.      in <stdio.h>.  mode may take  the  values  _IONBF,  to  turn
  2167.      buffering  off  completely,  _IOFBF,  for full buffering, or
  2168.      _IOLBF for line buffering. Full buffering means that the as-
  2169.      sociated  buffer  will only be flushed when full, while line
  2170.      buffering means that the buffer will be flushed at  the  end
  2171.      of  each  line or when input is requested from another STDIO
  2172.      stream. size is the size of the buffer supplied.  For  exam-
  2173.      ple:
  2174.  
  2175.        setvbuf(stdout, my_buf, _IOLBF, sizeof my_buf);
  2176.  
  2177.      If a buffer is supplied by  the  caller,  that  buffer  will
  2178.      remain   associated  with  that  stream  even  over■&fclose(),
  2179.      ■%fopen() calls until another ■'setvbuf() changes it.
  2180.  
  2181. SEE ALSO
  2182.      fopen, freopen, fclose
  2183.  
  2184. %SET_VECTOR
  2185.  
  2186. SYNOPSIS
  2187.      #include  <intrpt.h>
  2188.      typedef interrupt void (*isr)();
  2189.      isr set_vector(isr * vector, isr func);
  2190.  
  2191. DESCRIPTION
  2192.  
  2193.      This routine allows an interrupt vector to  be  initialized.
  2194.      The  first  argument  should be the address of the interrupt
  2195.      vector (not the vector number but the actual  address)  cast
  2196.      to  a pointer to ■#isr, which is a typedef'd pointer to an in-
  2197.      terrupt function. The second argument should be the function
  2198.      which  you  want the interrupt vector to point to. This must
  2199.      be declared using the ■)interrupt type qualifier.  The  return
  2200.      value  of  ■#set_■&vector() is the previous contents of the vec-
  2201.      tor.
  2202.  
  2203. SEE ALSO
  2204.      di(), ei()
  2205.  
  2206. %SIGNAL
  2207.  
  2208. SYNOPSIS
  2209.      #include <signal.h>
  2210.      void (* signal)(int sig, void (*func)());
  2211.  
  2212. DESCRIPTION
  2213.  
  2214.      ■&Signal()  provides  a  mechanism  for  catching  control-C's
  2215.      (ctrl-BREAK  for  MS-DOS)  typed  on the console during I/O.
  2216.      Under CP/M the console is polled whenever  an  I/O  call  is
  2217.      performed,  while for MS-DOS the polling depends on the set-
  2218.      ting of the BREAK command.  If a control-C is detected  cer-
  2219.      tain action will be performed. The default action is to exit
  2220.      summarily; this may be modified with ■&signal(). The sig argu-
  2221.      ment  to signal may at the present time be only SIGINT, sig-
  2222.      nifying an interrupt condition. The func argument may be one
  2223.      of SIG_DFL, representing the default action, SIG_IGN, to ig-
  2224.      nore control-C's completely, or the address  of  a  function
  2225.      which  will  be  called with one argument, the number of the
  2226.      signal caught, when a control-C is seen. As the only  signal
  2227.      supported  is  SIGINT,  this will always be the value of the
  2228.      argument to the called function.
  2229.  
  2230. SEE ALSO
  2231.      exit
  2232.  
  2233. %SIN
  2234.  
  2235. SYNOPSIS
  2236.      #include  <math.h>
  2237.  
  2238.      double    sin(double f);
  2239.  
  2240. DESCRIPTION
  2241.  
  2242.      This function returns the sine function of its argument.
  2243.  
  2244. SEE ALSO
  2245.      cos, tan, asin, acos, atan
  2246.  
  2247. %SPAWNL
  2248. %SPAWNV
  2249. %SPAWNVE
  2250.  
  2251. SYNOPSIS
  2252.      int       spawnl(char * n, char * argv0, ...);
  2253.      int       spawnv(cahr * n, char ** v)
  2254.      int       spawnve(char * n, char ** v, char ** e)
  2255.  
  2256. DESCRIPTION
  2257.  
  2258.      These functions will load and execute a  sub-program,  named
  2259.      by  the  argument  n. The calling conventions are similar to
  2260.      the functions ■%execl() and ■%execv(), the difference being that
  2261.      the spawn functions return to the calling program after ter-
  2262.      mination of the sub-program, while the exec functions return
  2263.      only  if the program could not be executed.  ■'Spawnve() takes
  2264.      an environment list in the same format as the argument  list
  2265.      which  will  be  supplied to the executed program as its en-
  2266.      vironment.
  2267.  
  2268. SEE ALSO
  2269.      execl, execv
  2270.  
  2271. %SPRINTF
  2272.  
  2273. SYNOPSIS
  2274.      #include  <stdio.h>
  2275.  
  2276.      int       sprintf(char * buf, char * fmt, ...);
  2277.      int       vsprintf(char * buf, char * fmt, va_list ap);
  2278.  
  2279. DESCRIPTION
  2280.  
  2281.      ■'Sprintf() operates in a similar fashion to ■&printf(),  except
  2282.      that  instead  of placing the converted output on the stdout
  2283.      stream, the characters are placed in the buffer at buf.  The
  2284.      resultant  string will be null-terminated, and the number of
  2285.      characters in the buffer will be returned.   ■(Vsprintf  takes
  2286.      an argument pointer rather than a list of arguments.
  2287.  
  2288. SEE ALSO
  2289.      printf, fprintf, sscanf
  2290.  
  2291. %SQRT
  2292.  
  2293. SYNOPSIS
  2294.      #include  <math.h>
  2295.  
  2296.      double    sqrt(double f)
  2297.  
  2298. DESCRIPTION
  2299.  
  2300.      ■$Sqrt() implements a square root function using Newton's  ap-
  2301.      proximation.
  2302.  
  2303. SEE ALSO
  2304.      exp
  2305.  
  2306. %SSCANF
  2307.  
  2308. SYNOPSIS
  2309.      #include  <stdio.h>
  2310.  
  2311.      int       sscanf(char * buf, char * fmt, ...);
  2312.      int       vsscanf(char * buf, char * fmt, va_list ap);
  2313.  
  2314. DESCRIPTION
  2315.  
  2316.      ■&Sscanf() operates in a similar  manner  to  ■%scanf(),  except
  2317.      that instead of the conversions being taken from stdin, they
  2318.      are taken from the string at buf.
  2319.  
  2320. SEE ALSO
  2321.      scanf, fscanf, sprintf
  2322.  
  2323. %SRAND
  2324.  
  2325. SYNOPSIS
  2326.      #include  <stdlib.h>
  2327.  
  2328.      void srand(int seed)
  2329.  
  2330. DESCRIPTION
  2331.  
  2332.      ■%Srand() initializes the random number generator accessed  by
  2333.      ■$rand()  with  the  given seed. This provides a mechanism for
  2334.      varying the starting point  of  the  pseudo-random  sequence
  2335.      yielded  by  ■$rand(). On the z80, a good place to get a truly
  2336.      random seed is from the refresh register. Otherwise timing a
  2337.      response from the console will do.
  2338.  
  2339. SEE ALSO
  2340.      rand
  2341.  
  2342. %STAT
  2343.  
  2344. SYNOPSIS
  2345.      #include  <stat.h>
  2346.  
  2347.      int       stat(char * name, struct stat * statbuf)
  2348.  
  2349. DESCRIPTION
  2350.  
  2351.      This routine returns information about the file by name. The
  2352.      information  returned is operating system dependent, but may
  2353.      include file attributes (e.g.   read  only),  file  size  in
  2354.      bytes, and file modification and/or access times.  The argu-
  2355.      ment name should be the name of the file,  and  may  include
  2356.      path names under DOS, user numbers under CP/M, etc.  The ar-
  2357.      gument statbuf should be the address of a structure  as  de-
  2358.      fined in ■$stat.■!h which will be filled in with the information
  2359.      about the file. The structure of ■&struct ■$stat is as follows:
  2360.  
  2361.        struct stat
  2362.        {
  2363.         short    st_mode;  /* flags */
  2364.         long     st_atime; /* access time */
  2365.         long     st_mtime; /* modification time */
  2366.         long     st_size;  /* file size */
  2367.        };
  2368.  
  2369.      The access and modification times (under DOS these are  both
  2370.      set  to the modification time) are in seconds since 00:00:00
  2371.      Jan 1 1970. The function ■%ctime() may be used to convert this
  2372.      to a readable value.  The file size is self explanatory. The
  2373.      flag bits are as follows:
  2374.                    Flag              Meaning
  2375.                  ____________________________________
  2376.                  S_IFMT      mask for file type
  2377.                  S_IFDIR     file is a directory
  2378.                  S_IFREG     file is a regular file
  2379.                  S_IREAD     file is readable
  2380.                  S_IWRITE    file is writeable
  2381.                  S_IEXEC     file is executable
  2382.                  S_HIDDEN    file is hidden
  2383.                  S_SYSTEM    file is marked system
  2384.                  S_ARCHIVE   file has been written to
  2385.      ■$Stat returns 0 on success, -1 on failure, e.g. if  the  file
  2386.      could not be found.
  2387.  
  2388. SEE ALSO
  2389.      ctime, creat, chmod
  2390.  
  2391. %STRCAT
  2392. %STRCMP
  2393. %STRCPY
  2394. %STRLEN
  2395. %STRNCAT
  2396. %STRNCMP
  2397. %STRNCPY
  2398.  
  2399. SYNOPSIS
  2400.      #include  <string.h>
  2401.  
  2402.      char *    strcat(char * s1, char * s2);
  2403.      int       strcmp(char * s1, char * s2);
  2404.      char *    strcpy(char * s1, char * s2);
  2405.      int       strlen(char * s);
  2406.      char *    strncat(char * s1, char * s2, size_t n);
  2407.      int       strncmp(char * s1, char * s2, size_t n);
  2408.      char *    strncpy(char * s1, char * s2, size_t n);
  2409.  
  2410. DESCRIPTION
  2411.  
  2412.      These  functions  provide  operations   on   null-terminated
  2413.      strings.  ■&Strcat()  appends  the string s2 to the end of the
  2414.      string s1.  The string at s1 will be null terminated.  Need-
  2415.      less  to  say  the buffer at s1 must be big enough. ■&Strcmp()
  2416.      compares the two strings and returns a number  greater  than
  2417.      0,  0  or  a  number  less than 0 according to whether s1 is
  2418.      greater than, equal to or less than s2. The  comparision  is
  2419.      via  the ascii collating order, with the first character the
  2420.      most significant.  ■&Strcpy() copies s2 into the buffer at s1,
  2421.      null terminating it.  ■&Strlen() returns the length of s1, not
  2422.      including the terminating null.   ■'Strncat(),  ■'strncmp()  and
  2423.      ■'strncpy()  will  catenate, compare and copy s2 and s1 in the
  2424.      same manner as their similarly named counterparts above, but
  2425.      involving at most n characters. For ■'strncpy(), the resulting
  2426.      string may not be null terminated.
  2427. %STRCHR
  2428. %STRRCHR
  2429.  
  2430. SYNOPSIS
  2431.      #include  <string.h>
  2432.  
  2433.      char *    strchr(char * s, int c)
  2434.      char *    strrchr(char * s, int c)
  2435.  
  2436. DESCRIPTION
  2437.  
  2438.      These functions locate an instance of the character c in the
  2439.      string s. In the case of ■&strchr() a pointer will be returned
  2440.      to the first instance of the character  found  be  searching
  2441.      from  the  beginning of the string, while ■'strrchr() searches
  2442.      backwards from the end of the string. A null pointer is  re-
  2443.      turned if the character does not exist in the string.
  2444.  
  2445. SEE ALSO
  2446.  
  2447. %SYSTEM
  2448.  
  2449. SYNOPSIS
  2450.      #include  <sys.h>
  2451.  
  2452.      int       system(char * s)
  2453.  
  2454. DESCRIPTION
  2455.  
  2456.      When executed under MS-DOS ■&system() will pass  the  argument
  2457.      string to the command processor, located via the environment
  2458.      string COMSPEC, for execution. The exit status of  the  com-
  2459.      mand  processor  will be returned from the call to system().
  2460.      For example, to set the baud rate on the serial port  on  an
  2461.      MS-DOS machine:
  2462.  
  2463.            system(■4MODE COM1:96,N,8,1,P■");
  2464.  
  2465.      This function will not work on CP/M-86  since  it  does  not
  2466.      have an invokable command interpreter. Under Concurrent CP/M
  2467.      the CLI system call is used.
  2468.  
  2469. SEE ALSO
  2470.      spawnl, spawnv
  2471.  
  2472. %TAN
  2473.  
  2474. SYNOPSIS
  2475.      #include  <math.h>
  2476.  
  2477.      double    tan(double f);
  2478.  
  2479. DESCRIPTION
  2480.  
  2481.      This is the tangent function.
  2482.  
  2483. SEE ALSO
  2484.      sin, cos, asin, acos, atan
  2485.  
  2486. %TIME
  2487.  
  2488. SYNOPSIS
  2489.      #include  <time.h>
  2490.  
  2491.      time_t    time(time_t * t)
  2492.  
  2493. DESCRIPTION
  2494.  
  2495.      This function returns the  current  time  in  seconds  since
  2496.      00:00:00 on Jan 1, 1970.  If the argument t is non-null, the
  2497.      same value is stored into the object pointed to by  t.   The
  2498.      accuracy  of  this  function  is  naturally dependent on the
  2499.      operating system having the correct time. This function does
  2500.      not  work  under  CP/M-86  or  CP/M  2.2 but does work under
  2501.      Concurrent-CP/M and CP/M+.
  2502.  
  2503. SEE ALSO
  2504.      ctime, gmtime, localtime, asctime
  2505.  
  2506. %TOUPPER
  2507. %TOLOWER
  2508. %TOASCII
  2509.  
  2510. SYNOPSIS
  2511.      #include  <ctype.h>
  2512.      char toupper(int c);
  2513.      char tolower(int c);
  2514.      char toascii(int c);
  2515.      char      c;
  2516.  
  2517. DESCRIPTION
  2518.  
  2519.      ■'Toupper() converts its lower  case  alphabetic  argument  to
  2520.      upper  case,  ■'tolower() performs the reverse conversion, and
  2521.      ■'toascii() returns a result that is guaranteed in  the  range
  2522.      0-0177.  ■'Toupper()  and ■'tolower return their arguments if it
  2523.      is not an alphabetic character.
  2524.  
  2525. SEE ALSO
  2526.      islower, isupper, isascii et. al.
  2527.  
  2528. %UNGETC
  2529.  
  2530. SYNOPSIS
  2531.      #include  <stdio.h>
  2532.  
  2533.      int       ungetc(int c, FILE * stream)
  2534.  
  2535. DESCRIPTION
  2536.  
  2537.      ■&Ungetc() will attempt to push back the character c onto  the
  2538.      named  stream,  such that a subsequent ■$getc() operation will
  2539.      return the character. At most one level of pushback will  be
  2540.      allowed,  and  if  the stream is not buffered, even this may
  2541.      not be possible. EOF is returned if the ■&ungetc()  could  not
  2542.      be performed.
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548. SEE ALSO
  2549.      getc
  2550.  
  2551. %UNLINK
  2552.  
  2553. SYNOPSIS
  2554.      int       unlink(char * name)
  2555.  
  2556. DESCRIPTION
  2557.  
  2558.      ■&Unlink() will remove (delete) the named file, that is  erase
  2559.      the file from its directory. See ■$open() for a description of
  2560.      the file name construction.  Zero will be returned  if  suc-
  2561.      cessful, -1 if the file did not exist or it could not be re-
  2562.      moved.
  2563.  
  2564. SEE ALSO
  2565.      open, close, rename, remove
  2566.  
  2567. %VA_START
  2568. %VA_ARG
  2569. %VA_END
  2570.  
  2571. SYNOPSIS
  2572.      #include  <stdarg.h>
  2573.  
  2574.      void      va_start(va_list ap, ■%parmN);
  2575.      ■$type      va_arg(ap, ■$type);
  2576.      void      va_end(va_list ap);
  2577.  
  2578. DESCRIPTION
  2579.  
  2580.      These macros are provided to give access in a  portable  way
  2581.      to  parameters  to  a function represented in a prototype by
  2582.      the ellipsis symbol (...), where type and  number  of  argu-
  2583.      ments  supplied  to  the  function  are not known at compile
  2584.      time. The rightmost parameter  to  the  function  (shown  as
  2585.      ■%parmN) plays an important role in these macros, as it is the
  2586.      starting point for access to further parameters. In a  func-
  2587.      tion  taking  variable  numbers  of arguments, a variable of
  2588.      type va_list should be declared, then the macro va_start in-
  2589.      voked  with  that  variable and the name of ■%parmN. This will
  2590.      initialize the variable to allow  subsequent  calls  of  the
  2591.      macro  va_arg  to access successive parameters. Each call to
  2592.      va_arg requires two arguments; the variable  previously  de-
  2593.      fined and a type name which is the type that the next param-
  2594.      eter is expected to be. Note that  any  arguments  thus  ac-
  2595.      cessed  will have been widened by the default conventions to
  2596.      ■#int, ■(unsigned ■#int or ■&double.  For example if a character ar-
  2597.      gument  has been passed, it should be accessed by va_arg(ap,
  2598.      int) since the char will have been widened to ■#int.  An exam-
  2599.      ple  is given below of a function taking one integer parame-
  2600.      ter, followed by a number of other parameters. In this exam-
  2601.      ple  the  function  expects  the subsequent parameters to be
  2602.      pointers to char, but note that the compiler is not aware of
  2603.      this,  and  it  is  the programmers responsibility to ensure
  2604.      that correct arguments are supplied.
  2605.  
  2606.        #include    <stdarg.h>
  2607.        prf(int n, ...)
  2608.        {
  2609.            va_list ap;
  2610.  
  2611.            va_start(ap, n);
  2612.            while(n--)
  2613.              puts(va_arg(ap, char *));
  2614.            va_end(ap);
  2615.        }
  2616.  
  2617. %WRITE
  2618.  
  2619. SYNOPSIS
  2620.      #include  <unixio.h>
  2621.  
  2622.      int       write(int fd, void * buf, size_t cnt)
  2623.  
  2624. DESCRIPTION
  2625.  
  2626.      ■%Write() will write from the buffer at buf up to cnt bytes to
  2627.      the  file associated with the file descriptor fd. The number
  2628.      of bytes actually written will be returned. EOF or  a  value
  2629.      less  than  cnt will be returned on error.  In any case, any
  2630.      return value not equal to cnt should be treated as an  error
  2631.      (cf. ■$read() ).
  2632.  
  2633. SEE ALSO
  2634.      open, close, read
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.